package com.qumitech.visualnovel.service;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.qumitech.visualnovel.model.dao.console.*;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public interface EconomicStatisticsService {

    JSONObject getOutputCommissionStatisticsLine(String channel, String version, String propId, String startTime, String endTime);

    List<OutputCommissionStatistics> getOutputCommissionStatisticsList(String channel, String version, String propId, String startTime,
                                                                       String endTime, int offset, int limit, String orderType, String orderBy);

    int getOutputCommissionStatisticsCount(String channel, String version, String propId, String startTime, String endTime);
    OutputCommissionStatistics getOutputCommissionStatisticsSum(String channel, String version, String propId, String startTime, String endTime);



    JSONObject getOutputStatisticsLine(String channel, String version, String propId, Integer changeId, String startTime, String endTime);

    List<OutputCommissionStatistics> getOutputStatisticsList(String channel, String version, String propId, Integer changeId, String startTime,
                                                             String endTime, int offset, int limit, String orderType, String orderBy);

    int getOutputStatisticsCount(String channel, String version, String propId, Integer changeId, String startTime, String endTime);


    JSONObject getCommissionStatisticsLine(String channel, String version, String propId, Integer changeId, String startTime, String endTime);

    List<OutputCommissionStatistics> getCommissionStatisticsList(String channel, String version, String propId, Integer changeId, String startTime,
                                                             String endTime, int offset, int limit, String orderType, String orderBy);

    int getCommissionStatisticsCount(String channel, String version, String propId, Integer changeId, String startTime, String endTime);


    JSONObject getStockStatisticsLine(String channel, String propId, String startTime, String endTime);
    StockStatistics getStockStatisticsSum(String channel, String propId, String startTime, String endTime);
    List<StockStatistics> getStockStatisticsList(String channel, String propId, String startTime, String endTime, int offset, int limit, String orderType, String orderBy);

    int getStockStatisticsCount(String channel, String propId, String startTime, String endTime);


    JSONArray diamondOutputDetail(String channel, String startTime, String endTime);
    JSONArray coinOutputDetail(String channel, String startTime, String endTime);
    JSONArray hiCoinOutputDetail(String channel, String startTime, String endTime);
    JSONArray diamondCommissionDetail(String channel, String startTime, String endTime);
    JSONArray coinCommissionDetail(String channel, String startTime, String endTime);
    JSONArray hiCoinCommissionDetail(String channel, String startTime, String endTime);

    JSONObject diamondOutputPercent(String channel, String startTime, String endTime);
    JSONObject coinOutputPercent(String channel, String startTime, String endTime);
    JSONObject hiCoinOutputPercent(String channel, String startTime, String endTime);
    JSONObject diamondCommissionPercent(String channel, String startTime, String endTime);
    JSONObject coinCommissionPercent(String channel, String startTime, String endTime);
    JSONObject hiCoinCommissionPercent(String channel, String startTime, String endTime);

    List<ProfitStatisticDO> profitStatisticList(String channel, String startTime, String endTime, int offset, int limit, String orderType, String orderBy);
    Integer countProfitStatistic(String channel, String startTime, String endTime);
    ProfitStatisticDO sumProfitStatistic(String channel, String startTime, String endTime);


    List<GiftStatisticDO> giftStatisticList(String channel, String startTime, String endTime, int offset, int limit, String orderType, String orderBy);
    Integer countGiftStatistic(String channel, String startTime, String endTime);
    GiftStatisticDO sumGiftStatistic(String channel, String startTime, String endTime);
    JSONObject getGiftStatisticLine(String channel, String startTime, String endTime);

    JSONObject getOutputConsumptionDetail(String uid, String channel, String startTime, String endTime, String orderBy, String orderType, String offset, String limit);
    JSONObject getRechargeStatisticList(String channel, String subChannel, String startTime, String endTime, Integer offset, Integer limit);
}
